package com.pine.dcts.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import com.pine.dcts.entity.BaseEntity;
import lombok.Data;


/**
 * 表索引
 * @see java.sql.DatabaseMetaData getIndexInfo
 */
@Data
@TableName("dep_index")
public class Index extends BaseEntity {
    /**
     * 索引id
     */

    @TableId(value = "index_id", type = IdType.AUTO)
    private Integer indexId;

    /**
     * 索引所属表id
     */

    @TableField("table_id")
    private Integer tableId;

    /**
     * 数据源id
     */

    @TableField("ds_id")
    private Integer datasourceId;

    /**
     * catalog
     * TABLE_CAT
     */
    @TableField("catalog_name")
    private String catalogName;

    /**
     * schema
     * TABLE_SCHEM
     */
    @TableField("schema_name")
    private String schemaName;

    /**
     * 表名
     * TABLE_NAME
     */
    @TableField("table_name")
    private String tableName;

    /**
     * 索引名称
     * INDEX_NAME
     */
    @TableField("index_name")
    private String indexName;

    /**
     * 索引类型
     * TYPE
     *
     * @see java.sql.DatabaseMetaData
     * tableIndexStatistic 0 表示此列包含与表的索引描述一起返回的表统计信息。
     * tableIndexClustered 1 表示此表索引是聚簇索引。
     * tableIndexHashed 2 表示此索引是散列索引。
     * tableIndexOther 3 表示此表索引不是聚簇索引，散列索引或表统计信息; 这是其他的东西。
     */
    @TableField("index_type")
    private Short indexType;

    /**
     * 索引里的列名
     * COLUMN_NAME
     */
    @TableField("column_name")
    private String columnName;

    /**
     * 该列在索引中的位置, 从1开始
     * ORDINAL_POSITION
     * 例如索引 idx(id,name),  id位置=1, name位置=2
     */
    @TableField("column_ordinal")
    private Short ordinalPosition;
    /**
     *  非唯一索引(Can
     *                 // index values
     *                 // be
     *                 // non-unique.
     *                 // false when
     *                 // TYPE is
     *                 // tableIndexStatistic
     *                 // )
     */
    private boolean nonUnique;

}
